<?php

class MasterPageWf extends TTemplateControl {
//<editor-fold defaultstate="collapsed" desc="Verifica Usuario Logueado">
  /**
   * determina si el usuario esta logueado en el sistema
   * @author VSR, 01/01/2011
   */
  private function usuarioLogueado(){
    $estaLogueado = false;
    try {
      $session = new THttpSession;
      $session->open();
      $oUsuario = $session[Usuario::NOMBRE_ENTIDAD];
      if(isset($oUsuario)){
        $estaLogueado = true;
      }
    } catch (Exception $e) {
      $estaLogueado = false;
    }
    return $estaLogueado;
  }

  /**
   * redirecciona al login
   * @author VSR, 01/01/2011
   */
  private function redireccionarLogin(){
    $this->Response->redirect($this->Service->constructUrl("FrmLoginWf"));
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * obtiene el listado de notificaciones a mostrar al usuario
   * @param <type> $oUsuario
   * @author VSR, 10/04/2011
   */
  private function dibujarNotificaciones($oUsuario) {
    $totalRegistros = 0;
    $sb = new StringBuilder();
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);

    try {
      $idUsuario = $oUsuario->getId();
      $esSuper = $oUsuario->getEsSuper();
      $arr = Notificacion::obtenerListadoMostrar($idUsuario, $esSuper, $paginaActual);
      if(is_null($arr)) {
        $totalRegistros = 0;
      } else {
        $totalRegistros = count($arr);
      }

      if($totalRegistros > 0 ) {
        $sb->appendLine("jQuery(document).ready(function(){");
        for($i=0; $i <= $totalRegistros - 1; $i++) {
          $row = $arr[$i];
          $idUsuario = Utilidades::isNull($row["IdUsuario"],"-1");
          $idNotificacion = Utilidades::isNull($row["IdNotificacion"],"-1");
          $titulo = Utilidades::isNull($row["Titulo"],"<i>Escriba un t&iacute;tulo</i>");
          $controlHtml = Utilidades::isNull($row["ControlHtmlAsociado"],"notificacion_tooltips");
          $skin = Utilidades::isNull($row["Skin"],"blue");
          $posicion = Utilidades::isNull($row["Posicion"],"tl");
          $ajusteTop = Utilidades::isNull($row["AjusteTop"],"");
          $ajusteLeft = Utilidades::isNull($row["AjusteLeft"],"");
          $ancho = Utilidades::isNull($row["Width"],"250");
          $descripcion = Utilidades::isNull($row["Descripcion"],"<i>Escriba un descripci&oacute;n</i>");
          $bodyNotificacion = "<span class=\"cssNotificacionTitulo\">{#TITULO}<br/></span><span class=\"cssNotificacionTextoNormal\">{#DESCRIPCION}</span><br/>{#BOTONES}";
          $opciones = "";

          //construye cuerpo de la notificacion
          $htmlBotones = $this->dibujarBotonesNotificacion($idUsuario, $idNotificacion, $controlHtml, $skin);
          $bodyNotificacion = str_replace("{#TITULO}", $titulo, $bodyNotificacion);
          $bodyNotificacion = str_replace("{#DESCRIPCION}", $descripcion, $bodyNotificacion);
          $bodyNotificacion = str_replace("{#BOTONES}", $htmlBotones, $bodyNotificacion);

          //construye las opciones
          $opciones .= "showme:true";
          $opciones .= ", style:'cssTextoNormal'";
          $opciones .= ", sticky:1";
          $opciones .= ", mode:'$posicion'";
          $opciones .= ", width: $ancho";
          $opciones .= ", skin:'$skin'";
          if(!Utilidades::isNullOrEmpty($ajusteTop)) $opciones .= ", ajusteTop:$ajusteTop";
          if(!Utilidades::isNullOrEmpty($ajusteLeft)) $opciones .= ", ajusteLeft:$ajusteLeft";

          //escribe script para mostrar el tooltips en la pagina
          $sb->appendLine("  jQuery('#$controlHtml').tooltip('$bodyNotificacion', { $opciones });");
        }
        $sb->appendLine("});");
      }
      $this->Page->ClientScript->registerEndScript("notificacionesOnLoad", $sb->toString());
    } catch (Exception $e) {
      //no hace nada
    }
  }

  /**
   * dibuja los botones "marcar como leido" y "recordar mas tarde" de la notificacion
   * @param <type> $idUsuario
   * @param <type> $idNotificacion
   * @param <type> $controlHtml
   * @return string
   * @author VSR, 11/04/2011
   */
  private function dibujarBotonesNotificacion($idUsuario, $idNotificacion, $controlHtml, $skin) {
    $html = "";
    $sb = new StringBuilder();

    try {
      $sb->append("<div style=\"text-align:right; padding-top:10px;\">");
      $sb->append("  <ul class=\"floatRightLI cssTextoNormal\">");
      $sb->append("    <li style=\"padding-left:5px\"><input type=\"button\" value=\"Le&iacute;do\" class=\"$skin-boton-leido\" onclick=\"grabarEstadoNotificacion(&quot;$idUsuario&quot;,&quot;$idNotificacion&quot;,&quot;$controlHtml&quot;,&quot;Leido&quot;)\" /></li>");
      $sb->append("    <li style=\"padding-left:5px\"><input type=\"button\" value=\"Recordar desp&uacute;es\" class=\"$skin-boton-recordar\" onclick=\"grabarEstadoNotificacion(&quot;$idUsuario&quot;,&quot;$idNotificacion&quot;,&quot;$controlHtml&quot;,&quot;Recordar&quot;)\" /></li>");
      $sb->append("  </ul>");
      $sb->append("</div>");
      $html = $sb->toString();
    } catch (Exception $e) {
      $html = "";
    }
    return $html;
  }

  /**
   * dibuja el logo de la empresa
   * @param <type> $oEmpresa
   * @author VSR, 10/01/2012
   */
  private function mostrarLogo($oEmpresa) {
    try {
      if(!Utilidades::isNullOrEmpty($oEmpresa)){
        $idEmpresa = $oEmpresa["Id"];
        $pathImagen = Utilidades::obtenerSessionPorNombre("Logo_".$idEmpresa);
        if(Utilidades::isNullOrEmpty($pathImagen)){
          $arr = WfEmpresa::obtenerDetalle($idEmpresa, WfEmpresa::NOMBRE_ENTIDAD_LOGO);
          $idArchivo = "0";
          $nombreArchivo = "";
          if(!is_null($arr)) {
            $arrDetalle = $arr[0];
            $totalRegistros = count($arrDetalle);
            if($totalRegistros > 0) {
              $row = $arrDetalle[0];
              $idArchivo = $row["IdArchivo"];
              $nombreArchivo = $row["NombreArchivo"];
            }
          }

          //construye ruta del archivo en el repositorio
          if($idArchivo != "0") {
            $entidad = WfEmpresa::NOMBRE_ENTIDAD_LOGO;
            $pathImagen = Archivo::RUTA_REPOSITORIO."/$entidad/reg$idEmpresa/$idArchivo/$nombreArchivo";
            Utilidades::grabarSessionPorNombre("Logo_".$idEmpresa, $pathImagen);
          } else {
            $pathImagen = "";
          }
        }

        if(Utilidades::isNullOrEmpty($pathImagen)){
          $this->lblLogo->Visible = false;
        } else {
          $this->lblLogo->Visible = true;
          $this->lblLogo->Text = "<a href=\"index.php?page=Workflow.Home\"><img src=\"".$pathImagen."\" alt=\"logo\" /></a>";
        }
      } else {
        $this->lblLogo->Visible = false;
      }
    } catch (Exception $e) {
      $this->lblLogo->Visible = false;
    }

  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function onInit($param) {
    parent::onInit($param);
    if(!$this->usuarioLogueado()){
      $this->redireccionarLogin();
    }
    $oUsuarioWf = new UsuarioWf();
    $oUsuarioWf = Utilidades::obtenerSessionPorNombre(Usuario::NOMBRE_ENTIDAD);
    $oEmpresa = Utilidades::obtenerEmpresaActiva($oUsuarioWf);
    $arrEmpresa = $oUsuarioWf->getEmpresas();
    $totalEmpresas = count($arrEmpresa);

    $this->lblNombreUsuario->Text = $oUsuarioWf->getNombreCompleto() . " (<b>" . $oEmpresa["Nombre"] . "</b>)";
    $this->mostrarLogo($oEmpresa);
    $this->lnkCambiarEmpresa->Visible = ($totalEmpresas == 1) ? false : true;
    
    try {
      $session = new THttpSession;
      $session->open();
    } catch (Exception $e) {
      //se deja estructura
    }
    $this->txtThemeBaseUrl->Value = $this->Page->Theme->BaseUrl;
    //esta linea sirve para cambiar el estilo del sitio
    //$this->Page->Theme = "default";
  }

  public function onLoad($param) {
    parent::onLoad($param);
    try {
      $oUsuarioWf = Utilidades::obtenerSessionPorNombre(Usuario::NOMBRE_ENTIDAD);
      $this->dibujarNotificaciones($oUsuarioWf);
    } catch (Exception $e) {
      //codigo;
    }
  }

//</editor-fold>
}

?>
